const gulp = require('gulp') //引入本地gulp
const cssmin = require('gulp-cssmin')

const sassObj = require('sass')
const sassGulp = require('gulp-sass')
const sass = sassGulp(sassObj)

const uglify = require('gulp-uglify')
const babel = require('gulp-babel')

const htmlmin = require('gulp-htmlmin')

const clean = require('gulp-clean')

// web服务包, nginx liveserver功能
const webserver = require('gulp-webserver')
/**
 * 压缩css任务
 *   1. 安装gulp-cssmin
 */
gulp.task('css', function () {
    return gulp.src('./src/css/**/**') //读文件
        .pipe(cssmin()) //压缩处理
        .pipe(gulp.dest('./dist/css/')) //写文件
})
/**
 * sass任务
 *   1. sass->css   
 *        安装 npm i sass -D
 *        安装 npm i gulp-sass -D  
 *   2. 压缩css
 */
gulp.task('sass', function () {
    return gulp.src('./src/sass/**')
        .pipe(sass()) // sass->css
        .pipe(cssmin()) //压缩
        .pipe(gulp.dest('./dist/css/'))
})

/**
 * js任务
 */
gulp.task('js', function () {
    return gulp.src('./src/js/**')
        // .pipe(babel({
        //     presets: ['es2015']
        // }))
        // .pipe(uglify())
        .pipe(gulp.dest('./dist/js/'))
})

/**
 * html任务
 *   压缩html文件
 */
gulp.task('html', function () {
    return gulp.src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttributes: true,
            collapseWhitespace: true
        }))
        .pipe(gulp.dest('./dist/pages/'))
})

/**
 * lib任务
 */
gulp.task('lib', function () {
    return gulp.src('./src/lib/**')
        .pipe(gulp.dest('./dist/lib/'))
})

/**
 * static任务
 */
gulp.task('static', function () {
    return gulp.src('./src/static/**')
        .pipe(gulp.dest('./dist/static/'))
})

/**
 * 清除dist目录任务
 */
gulp.task('clean', function () {
    return gulp.src('./dist', {
            allowEmpty: true
        })
        .pipe(clean())
})

/**
 * web服务
 */
gulp.task('webserver', function () {
    return gulp.src('./dist')
        .pipe(webserver({
            host: '10.7.173.128',
            port: 3000,
            livereload: true,
            open: './pages/index.html'
        }))
})

/**
 * watch 任务
 *    监听文件变化自动打包
 */
gulp.task('watch', function () {
    gulp.watch('./src/css/**', gulp.parallel('css'))
    gulp.watch('./src/sass/**/**', gulp.parallel('sass'))
    gulp.watch('./src/js/**/**/**', gulp.parallel('js'))
    gulp.watch('./src/pages/**', gulp.parallel('html'))
    gulp.watch('./src/lib/**/**', gulp.parallel('lib'))
    gulp.watch('./src/static/**/**',gulp.parallel('static'))
})


/**
 * 按顺序执行
 */


/**
 * 默认任务
 *   gulp
 */
exports.default = gulp.series('clean', gulp.parallel('css', 'js', 'sass', 'html', 'lib', 'static'), 'webserver', 'watch')